package com.syg.case01;

import org.springframework.aop.support.AopUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * spring的ioc 容器中默认都是原生对象，只有通过aop增强的对象才是代理对象。
 *      配置了aop的类或者类中方法上有@Transactional注解的（因为@Transactional注解的原理就是基于aop的）。
 *
 *      查看当前对象是否是代理对象的方法：AopUtils.isAopProxy(对象)
 * @author syg
 * @date 2021年12月1日10:18:13
 */
@RestController
public class ControllerCase01 {

    @Resource
    ACase01 case01;

    /**
     * 情况1：类没被aop增强，并且类中方法没有@Transactional注解
     */
    @RequestMapping(value = "/case01",method = RequestMethod.GET)
    public void proxyClassTest(){
        // 结果是false 因为ioc容器默认情况创建的都是原生类
        boolean aopProxy = AopUtils.isAopProxy(case01);
        System.out.println("proxyClassTest result = " + aopProxy);
    }
}
